"""
管理员视图层
"""

from interface import admin_interface, common_interface
from lib import common

user_dict = {
    'user': None
}


# 管理员注册函数
def register():
    while True:
        # 1. 接受用户输入
        username = input("请输入用户名: ").strip()
        password = input("请输入密码: ").strip()
        re_password = input("请确认密码: ").strip()

        # 2. 校验用户输入
        if password != re_password:
            print("两次密码不一致！")
            continue

        # 3. 调用接口函数
        flag, msg = admin_interface.register_interface(username, password)

        # 4. 显示返回结果
        if flag:
            print(msg)
            break
        else:
            print(msg)


# 管理员登录函数
def login():
    while True:
        # 1. 接受用户输入
        username = input("请输入用户名: ").strip()
        password = input("请输入密码: ").strip()

        # 2. 校验用户输入
        if username == "" or password == "":
            print("用户名或密码不能为空！")
            continue

        # 3. 调用接口函数
        flag, msg = common_interface.login_common_interface(username, password, user_type='admin')

        # 4. 显示返回结果
        if flag:
            print(msg)
            user_dict["user"] = username
            break
        else:
            print(msg)


# 管理员添加学校函数
@common.auth('admin')
def create_school():
    while True:
        # 1. 接受用户输入
        school_name = input("请输入学校名字: ").strip()

        # 2. 校验用户输入
        if school_name == "":
            print("学校名字不能为空！")
            continue

        # 3. 调用接口函数
        flag, msg = admin_interface.create_school_interface(
            school_name, user_dict["user"]
        )

        # 4. 显示返回结果
        if flag:
            print(msg)
            break
        else:
            print(msg)


# 管理员添加课程函数
@common.auth('admin')
def create_course():
    while True:
        # 1. 打印出所有的学校
        flag, msg = common_interface.get_all_school_interface()

        # 2. 如果没有学校则退出
        if not flag:
            print(msg)
            break

        # 3. 如果有学校则打印并让用户选择
        print("当前系统中的学校有: ")
        for key, value in enumerate(msg):
            print(f"\t{key}.{value}")
        choice = input("请输入编号选择要添加的学校: ").strip()

        if not choice.isdigit():
            print("必须输入数字")
            continue

        choice = int(choice)
        select_school = msg[choice]

        # 4. 输入要添加的课程
        course_name = input("请输入要添加的课程名字: ").strip()

        if course_name == "":
            print("课程名字不能为空！")
            continue

        # 5. 调用接口函数
        flag, msg = admin_interface.create_course_interface(
            select_school, course_name, user_dict["user"]
        )

        # 6. 显示返回结果
        if flag:
            print(msg)
            break
        else:
            print(msg)


# 管理员添加老师函数
@common.auth('admin')
def add_teacher():
    while True:
        # 1. 接受用户输入
        teacher_name = input("请输入老师名字: ").strip()

        # 2. 校验用户输入
        if teacher_name == "":
            print("老师名字不能为空！")
            continue

        # 3. 调用接口函数
        flag, msg = admin_interface.add_teacher_interface(
            teacher_name, user_dict["user"]
        )

        # 4. 显示返回结果
        if flag:
            print(msg)
            break
        else:
            print(msg)


# 功能字典: 菜单，函数
func_dict = {
    "1": ("注册", register),
    "2": ("登录", login),
    "3": ("创建学校", create_school),
    "4": ("创建课程", create_course),
    "5": ("创建讲师", add_teacher)
}


# 管理员视图函数
def admin_view():
    while True:
        print("")
        print(" 欢迎来到管理员界面 ".center(30, '='))
        for key,value in func_dict.items():
            print(f"\t    {key}.{value[0]}")
        print(" end ".center(38, '='))
        print("")

        choice = input("请输入功能编码(q退出): ").strip()

        if choice == 'q':
            break

        if choice not in func_dict:
            print("输入的值超出范围！")
            continue

        func_dict[choice][1]()